AWS Systems Manager 사용을 위해 EC2/온프레미스 서버의 SSM 에이전트의 설치 및 확인해보기
안녕하세요, 임채정입니다.
AWS Systems Manager 의 사용을 위해서는 서버안에 SSM 에이전트를 설치해주고 AWS Systems Manager 를 사용할 수 있도록 권한을 줘야 합니다.
이번 블로그에서는 EC2 인스턴스와 온프레미스 서버를 AWS Systems Manager 서비스가 사용 가능하도록 만들어 보겠습니다.
아젠다
- EC2 인스턴스
- 온프레미스 서버
1. EC2 인스턴스
먼저 EC2 인스턴스입니다.
일단 EC2 인스턴스에는 기본적으로 SSM 에이전트가 설치되어 있는 경우가 많습니다.
다음 공식 페이지에 기본적으로 SSM 에이전트가 사전 설치된 인스턴스 목록이 나와있습니다.
1-1. IAM 역할 생성
Systems Manager 에서 EC2에 작업을 할 수 있도록 권한을 부여해줘야 합니다.
그 권한 설정을 EC2 인스턴스에 할당하기 위해 IAM 역할을 생성하겠습니다.
먼저, [역할 만들기]를 클릭합니다.
신뢰할 수 있는 엔터티를 AWS 서비스
를 선택하고, 사용 사례를 EC2
로 선택합니다.
정책 중에서 AmazonSSMManagedInstanceCore
를 채크해서 할당해줍니다.
이때, AmazonSSMManagedInstanceCore
정책은 EC2 인스턴스가 SSM에서의 접근을 허용하는 권한이 정의되어 있습니다.
정책 할당이 끝나면 마지막 단계에서 이름을 입력하고 역할을 생성합니다.
이번 블로그에서는 정책이름을 AmazonSSMManagedRole
로 지정했지만 이름은 임의로 입력하면 됩니다.
그러면 다음과 같이 역할이 생성되었습니다.
1-2. EC2 인스턴스에 IAM 역할 할당
다음으로 대상 EC2 인스턴스에 위에서 작성한 IAM 역할을 할당하겠습니다.
먼저 IAM 역할을 할당할 인스턴스를 선택합니다.
[작업]버튼을 클릭하고 [보안] -> [IAM 역할 수정]을 클릭합니다.
그러면 IAM 역할을 수정할 수 있는 페이지로 이동합니다.
여기서 위에서 생성한 IAM 역할을 선택하고 보존합니다.
그러면 EC2 페이지에서도 IAM 역할이 잘 할당되어 있는것을 확인할 수 있습니다.
1-3. Systems Manager 및 서버에서 확인
Systems Manager 에서도 확인을 해보겠습니다.
Systems Manager 콘솔 페이지에서 [플릿 관리자]태그에 들어가보면 다음과 같이 에이전트가 설치되있고 권한이 허용된 인스턴스의 목록을 확인할 수 있습니다.
이번에는 다시 EC2 인스턴스 페이지로 돌아가봅시다.
인스턴스에서 연결을 눌러서 [EC2 인스턴스 연결]태그에서 [연결]을 클릭합니다.
그러면 인스턴스가 켜지는데 다음 명령어를 실행해서 SSM 에이전트가 잘 실행하고 있는지도 확인할 수 있습니다.
sudo systemctl status amazon-ssm-agent
2. 온프레미스 서버
이번에는 온프레미스 서버입니다.
위의 EC2 인스턴스와 달리 온프레미스 서버는 SSM 에이전트가 설치되어 있지 않습니다.
2-1. 온프레미스 서버 생성
이번에는 먼저 온프레미스 서버를 생성하겠습니다.
블로그에서는 SSM 에이전트가 설치되어 있지 않은 Red Hat 서버를 생성해서 온프레미스 서버 환경에서 테스트하는 것으로 가정하겠습니다.
이 때, IAM 인스턴스 프로파일
에는 별다른 설정을 하지 않습니다.
SSM 에이전트가 설치되지 않은 온프레미스 서버같은 환경이 생성되었습니다. (가정)
2-2. 하이브리드 활성화
다음으로는 Systems Manager 에서 [하이브리드 활성화] 태그에서 [정품 인증 생성] 을 클릭합니다.
IAM 역할이 필요한 권한을 가진 시스템 기본 명령 실행 역할을 생성합니다.
인지 확인하고 [정품 인증 생성]을 합니다.
그렇게 되면 Activation Code와 Activation ID가 표시되는데 이 정보가 에이전트 설치시에 필요하기 때문에 기억해둡니다.
2-3. 서버 접속 및 에이전트 설치
그럼 이제 서버에 에이전트를 설치하겠습니다.
먼저 서버에 접속합니다.
ssh -i .ssh/lim-tokyo-key.pem [email protected] # [ec2-user@ip-172-31-13-179 ~]$
그 다음 SSM 에이전트가 설치되어 있는지 확인합니다.
sudo systemctl status amazon-ssm-agent # Unit amazon-ssm-agent.service could not be found.
없는 게 확인이 되면 다음 명령어의 실행을 통해 에이전트를 설치를 합니다.
mkdir /tmp/ssm curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm # % Total % Received % Xferd Average Speed Time Time Time Current # Dload Upload Total Spent Left Speed # 100 25.4M 100 25.4M 0 0 3076k 0 0:00:08 0:00:08 --:--:-- 3810k sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm sudo systemctl stop amazon-ssm-agent
2-2. 하이브리드 활성화
에서 획득한 정보를 입력해서 명령어를 실행합니다.
# sudo amazon-ssm-agent -register -code "Activation Code" -id "Activation ID" -region "region" sudo amazon-ssm-agent -register -code "Tklx+WTDv2K4ohmBVLc4" -id "4292640d-55af-4946-9ed1-8c1bd5f75c17" -region "ap-northeast-1" # Error occurred fetching the seelog config file path: open /etc/amazon/ssm/seelog.xml: no such file or directory # Initializing new seelog logger # New Seelog Logger Creation Complete # 2022-04-27 15:55:27 WARN Could not read InstanceFingerprint file: InstanceFingerprint does not exist. # 2022-04-27 15:55:27 INFO No initial fingerprint detected, generating fingerprint file... # 2022-04-27 15:55:27 INFO Successfully registered the instance with AWS SSM using Managed instance-id: mi-0c7e8e445a1e69425
결과에 instance-id: mi-0c7e8e445a1e69425
가 Systems Manager에 표시되는 인스턴스ID가 됩니다.
이 때, EC2 인스턴스는 i-
로 시작되는데 온프레미스 서버의 경우 mi-
로 시작하는 걸 알 수 있습니다.
그 후에 SSM 에이전트를 다시 시작하면 에이전트 설치가 완료됩니다.
sudo systemctl start amazon-ssm-agent
2-4. Systems Manager에서 확인
[하이브리드 활성화] 태그에서 작성한 정품인증을 다시 한 번 확인하면 인스턴스를 하나 등록했기 때문에 아까와 달리 등록된 인스턴스에 1
이 표시되어 있습니다.
또한, [플릿 관리자] 태그를 확인해보면 에이전트를 설치한 인스턴스가 잘 추가되어 있는 것을 확인할 수 있습니다.